package com.example.reschain.demo03;

import com.example.reschain.demo02.OrderContext;
import lombok.Getter;
import lombok.Setter;

/**
 * @author renyitong
 * @version 1.0.0
 * @createTime 2024年10月09日
 * @Description
 */
@Setter
@Getter
public abstract class AbstractOrderHandle {

    /**
     * 责任链，下一个节点
     */
    private AbstractOrderHandle next;

    /**
     * 执行入口
     * @param context
     * @return
     */
    public OrderContext execute(OrderContext context){
        context = handle(context);
        // 判断是否有下一个责任链节点，没有的话，说明是最后一个节点
        if (getNext() != null){
            getNext().execute(context);
        }
        return context;
    }

    public abstract OrderContext handle(OrderContext context);

}
